package lab.chapter;

import lombok.NoArgsConstructor;

import java.util.LinkedList;
import java.util.List;

/**
 * 产生式
 */
@NoArgsConstructor
public class Production {
    // 产生式左侧，非终结符名称
    String lhs = null;
    // 产生式右侧
    // 类成员，默认为default.对于同一个包中的其他类相当于公开（public），对于不是同一个包中的其他类相当于私有（private）。受保护（protected）对子类相当于公开，对不是同一包中的没有父子关系的类相当于私有
    List<String> rhs = new LinkedList<>();

    Production(GrammarNode grammarNode) {
        lhs = grammarNode.getName();
        for (int i = 0; i < grammarNode.getChildCount(); i++){
            rhs.add(grammarNode.getChild(i).getName());
        }
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(lhs).append("->");
        for (String rh : rhs) {
            sb.append(rh).append(' ');
        }
        return sb.toString();
    }
}
